Solidity智能合约:onlyOwner 函数修饰符 |
您所在的位置:网站首页 › solidity 合约调用 › Solidity智能合约:onlyOwner 函数修饰符 |
内容来自:https://cryptozombies.io/ 函数修饰符函数修饰符看起来跟函数没什么不同,不过关键字modifier 告诉编译器,这是个modifier(修饰符),而不是个function(函数)。它不能像函数那样被直接调用,只能被添加到函数定义的末尾,用以改变函数的行为。 咱们仔细读读 onlyOwner: /** * @dev 调用者不是‘主人’,就会抛出异常 */ modifier onlyOwner() { require(msg.sender == owner); _; } onlyOwner 函数修饰符是这么用的: contract MyContract is Ownable { event LaughManiacally(string laughter); //注意! `onlyOwner`上场 : function likeABoss() external onlyOwner { LaughManiacally("Muahahahaha"); } }注意 likeABoss 函数上的 onlyOwner 修饰符。 当你调用 likeABoss 时,首先执行 onlyOwner 中的代码, 执行到 onlyOwner 中的 _; 语句时,程序再返回并执行 likeABoss 中的代码。 可见,尽管函数修饰符也可以应用到各种场合,但最常见的还是放在函数执行之前添加快速的 require检查。 因为给函数添加了修饰符 onlyOwner,使得唯有合约的主人(也就是部署者)才能调用它。 注意:主人对合约享有的特权当然是正当的,不过也可能被恶意使用。比如,万一,主人添加了个后门,允许他偷走别人的僵尸呢? 所以非常重要的是,部署在以太坊上的 DApp,并不能保证它真正做到去中心,你需要阅读并理解它的源代码,才能防止其中没有被部署者恶意植入后门;作为开发人员,如何做到既要给自己留下修复 bug 的余地,又要尽量地放权给使用者,以便让他们放心你,从而愿意把数据放在你的 DApp 中,这确实需要个微妙的平衡。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |